package com.choupin.choupin.utils.images;

import com.choupin.choupin.service.exception.FileEmptyException;
import com.choupin.choupin.service.exception.FileSizeException;
import com.choupin.choupin.service.exception.FileTypeException;
import com.choupin.choupin.service.exception.UpdateException;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class SaveImage {
    private static final  Integer AVATAR_MAX_SIZE=600*1024;
    private  static final List<String> AVATARTYPE=new ArrayList<>();
    private  static final  String LOCAL_UPLOAD_PATH="D:/choupin/src/main/resources/static/upload/avatar/";
    private  static final  String LOCAL_FRONT_PATH="D:/uniapp/choupin/static/avatar/user/";
    static {
        AVATARTYPE.add("image/jpeg");
        AVATARTYPE.add("image/png");
        AVATARTYPE.add("image/jpg");
    }


    public static String saveImage(MultipartFile file,String sourceFile,String targetFile,String saveFile){
        if (file.isEmpty()){
            throw new FileEmptyException("文件上传异常！文件不能为空");
        }
        if (file.getSize()>AVATAR_MAX_SIZE){
            throw new FileSizeException("文件上传异常！文件大小超过上限:"+AVATAR_MAX_SIZE);
        }
        if (!AVATARTYPE.contains(file.getContentType())){
            throw new FileTypeException("文件上传异常！文件类型不正确，允许的类型有："+AVATARTYPE);
        }
        //生成文件名
        String ofilename=file.getOriginalFilename();
        Integer index=ofilename.lastIndexOf(".");
        String suffix="";
        if (index!=-1){
            suffix=ofilename.substring(index);
        }
        String filename= UUID.randomUUID().toString()+suffix;

        //生成目标路径
//        String filePath=request.getServletContext().getRealPath("upload");
        String filePath=sourceFile;  //将它保存到本地计算机指定路径
        String filePath2=targetFile;
        File parent=new File(filePath);//备份服务器路径
        File parent2=new File(filePath2);//备份到前端
        if (!parent.exists()){
            parent.mkdirs();
        }
        if (!parent2.exists()){
            parent2.mkdirs();
        }
        //将用户上传的头像上传到服务器
//        File dest=new File(uploadDir,filename);
        File dest=new File(parent,filename);
//      由于没有服务器于是备到前端项目
        File dest2=new File(parent2,filename);

        try {
            file.transferTo(dest);
//            备份到前端
            Files.copy(dest.toPath(),dest2.toPath());
        } catch (Exception e) {
            e.printStackTrace();
        }
        String avatar=saveFile+filename; //存入服务器的路径，当前没有服务器，暂时改为本计算机的本项目路径做测试
        System.out.println("用抽奖池保存图片成功"+avatar);
        return avatar;
    }
}
